//------------------------------------------------------------------------
/**
\file		IIntFeature.h
\brief		Definition of the IIntFeature interface
\Date       2016-8-09
\Version    1.1.1608.9091
*/
//------------------------------------------------------------------------
#pragma once
#include "GXIAPIBase.h"
#include "GXSmartPtr.h"

class GXIAPICPP_API IIntFeature
{
public:
	//---------------------------------------------------------
	/**
	\brief Destructor
	*/
	//---------------------------------------------------------
	virtual ~IIntFeature(){};

	//----------------------------------------------------------------------------------
	/**
	\brief   Get the minimum value allowed
	*/
	//----------------------------------------------------------------------------------
	virtual int64_t GetMin() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Get the maximum value allowed
	*/
	//----------------------------------------------------------------------------------
	virtual int64_t GetMax() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Get the constant increment if there is any
	*/
	//----------------------------------------------------------------------------------
	virtual int64_t GetInc() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Get a feature value
	*/
	//----------------------------------------------------------------------------------
	virtual int64_t GetValue() = 0;

	//----------------------------------------------------------------------------------
	/**
	\brief   Set a feature value
	*/
	//----------------------------------------------------------------------------------
	virtual void SetValue(int64_t nValue) = 0;
};
template class GXIAPICPP_API  GXSmartPtr<IIntFeature>;
typedef GXSmartPtr<IIntFeature>       CIntFeaturePointer;